package demo.practice.sort;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class P56 {

    public static void main(String[] args) {
        P56 p56= new P56();
        p56.merge(new int[][]
                {{1,4},{0,2},{3,5}});
    }

    public int[][] merge(int[][] intervals) {

        Arrays.sort(intervals, (i1, i2) -> {
            return i1[0] - i2[0];
        });

        //int i=0;
        List<int[]> list = new ArrayList<>();
        for (int i = 0; i < intervals.length; i++){
            if (i == intervals.length - 1)
                list.add(intervals[i]);
            else{
                int[] befor = intervals[i];
                int[] secoend = intervals[i + 1];

                if (befor[1] >= secoend[0]) {
                    //list.add(new int[]{befor[0], Math.max(secoend[1], befor[1])});
                    //i++;

                    secoend[0]=befor[0];
                    secoend[1]=Math.max(secoend[1], befor[1]);
                }else{
                    list.add(befor);
                }

            }
        }
        int[][] rt= new int[list.size()][2];
        for(int i=0;i<rt.length;i++){
            rt[i]= list.get(i);
        }
        return rt;

        /*List<int[]> list = new ArrayList<>();
        for (int i = 0; i < intervals.length; i++) {
            if (i == intervals.length - 1)
                list.add(intervals[i]);
            else {
                int[] befor = intervals[i];
                int[] secoend = intervals[i + 1];

                if (befor[1] >= secoend[0]) {
                    list.add(new int[]{befor[0], Math.max(secoend[1], befor[1])});
                    i++;
                } else {
                    list.add(befor);
                }
            }
        }
        int[][] rt= new int[list.size()][2];
        for(int i=0;i<rt.length;i++){
            rt[i]= list.get(i);
        }
        return rt;*/
    }
}
